package objectoriented1;

/*
商品类
成员属性



成员方法
方法的声明：  返回类型 方法名（方法的参数）{方法的操作代码}

不带参数，没有返回数据的方法 void 方法名（）{}

带返回数据的方法：

 矿泉水  跑腿（）{
     去超市；
     买一瓶矿泉水；
     //带回数据：一瓶矿泉水，把水交给谁？谁调用方法就把数据给谁。
     return 矿泉水；
     }

带返回数据的方法，带参数的方法：
参数：方法执行时候，需要的数据（不固定，变化的数据）传递给方法
 矿泉水  跑腿（int 钱）{
     //给10元钱；//不确定，可能回变化
     去超市；
     买一瓶矿泉水；//交钱买
     //带回数据：一瓶矿泉水，把水交给谁？谁调用方法就把数据给谁。
     return 矿泉水；
     }

 */
public class Goods {
    //属性
    private String goodsCode;//商品编号
    private String goodsName;//商品名称
    private double goodsPrice;//价格
    static String shopName;//商店名称
    //操作---方法
    //构造方法--空构造方法
    public Goods(){
        //调用带参数的构造方法
        this("000","我的商品",2.0);
        System.out.println("执行空构造方法");

    }
    //重载的构造方法
    //构造方法做什么，new对象调用构造方法
    //给属性初始化
    public Goods(String goodsCode,String goodsName,double goodsPrice){
        this.goodsCode=goodsCode;
        this.goodsName=goodsName;
        this.goodsPrice=goodsPrice;
        System.out.println("执行带参数的构造方法");

    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public String getGoodsCode() {
        return goodsCode;
    }
    //方法的参数-局部变量goodsCode，和成员变量同名
    public void setGoodsCode(String goodsCode) {
        //在方法中，默认使用局部变量
        //想要使用成员变量，加限定，指明访问成员变量
        //对象名.goodsCode
        //当前对象=this

//        goodsCode="101";//参数，局部变量
//        this.goodsCode="102";//属性，成员变量

        this.goodsCode = goodsCode;
    }

    public String getGoodsName() {
        return goodsName;
    }
//重载
    public void setGoodsName(String name) {
        this.goodsName = name;
    }
    public void setGoodsName(){
        this.goodsName="我的商品";
    }
    //设置价格属性的值
    void setGoodsPrice(double p) {
        int a=100;//a,p局部变量


        if (p >= 0) {
            goodsPrice = p;
        }else {
            System.out.println("价格不能为负数");
        }
    }
    //获取价格的方法
    public double  getGoodsPrice( ) {
         return goodsPrice;
    }

    //展示商品的信息
    public void show() {
        System.out.println("商品编号\t\t\t商品名称\t\t\t价格");
        System.out.println(goodsCode + "\t\t\t" + goodsName + "\t\t\t" + goodsPrice);
    }
}
